
      SUBROUTINE INPUTMSH(CX,CY,INCD,NN,NPI,file_b,NLD,NelD,
     &			nu_msc,nu_msd,nu_trip,nu_trif,ic)    
      IMPLICIT DOUBLE PRECISION (A-H,O-Z)

      INCLUDE 'param_dim.inc'
      integer nninc(ninc_max)
! NUMPI(ninc_max)
!       integer NUMPCI(ninc_max),VARIA(ninc_max)
      real*8 C0,CINC(ninc_max)



      DIMENSION KODE(NX),X(NX),Y(NX),INC(NX,2),FI(NX),TITULO(20)
      dimension POTNO(NX),FINO(NX)
      DIMENSION CX(NPIX),CY(NPIX)
      DIMENSION INCD(NELDX,3)
      DIMENSION NLD(ninc_max+1,2)

      character*2 icchar
      character*6 ini_no,fni
      character*9 ini_elm, fim_no, fei,fnf
      character*12 fim_elm,fef
! fni flag noh inicio; fnf flag noh fim;  fei flag elemento inicio;  fef flag elemento fim;
      character*11 file_b
      character*17 file_msc,file_msd
      character*19 file_trip,file_trif

      parameter(ini_no='$Nodes', ini_elm='$Elements', 
     &          fim_no='$EndNodes', fim_elm='$EndElements')

      nu_msc=20
      nu_msd=21
      nu_trip=22
      nu_trif=23



!           Monta nomes do arquivo de saida.     
      file_msc  = file_b//'_c.msh'
      file_msd  = file_b//'_d.msh'
      if(ic.le.9)then
	write(icchar,'(i1)'),ic
	file_trip = file_b//'_0'//icchar//'p.tri'
	file_trif = file_b//'_0'//icchar//'f.tri'
      else
      	write(icchar,'(i2)'),ic
	file_trip = file_b//'_'//icchar//'p.tri'
	file_trif = file_b//'_'//icchar//'f.tri'
      endif

      OPEN (nu_msc,FILE=file_msc,STATUS='OLD')
      OPEN (nu_msd,FILE=file_msd,STATUS='OLD')
      OPEN (nu_trip,FILE=file_trip,STATUS='UNKNOWN')
      OPEN (nu_trif,FILE=file_trif,STATUS='UNKNOWN')


!  pular as tres linhas iniciais da saida do gmsh
      read(nu_msc,*)
      read(nu_msc,*)
      read(nu_msc,*)
      
C Verifica��o da integridade dos arquivos de malha
      read(nu_msc,130 ) fni

      if (fni.ne.ini_no) stop 'Flag de inicio do no nao confere'

      read(nu_msc,*) nnt_c !numero total de nos do contorno

      do i=1,nnt_c
         read(nu_msc,*) k,x(k),y(k) !nos do contorno
      enddo

      read(nu_msc,131) fnf ! flag nohs final

      if (fnf.ne.fim_no) stop 'Flag de final de nos nao confere(cont.)'


C     Leitura dos Elementos dos Contornos

      read(nu_msc,131 ) fei

      if (fei.ne.ini_elm) stop 'Inicio de elemts. nao confere (cont)'

      read(nu_msc,*) nelt_c


      num_inc= 0
         read(nu_msc,*) k,klixo,it_elm,it_cont0,ilin,
     &			inno,inc(k,1),inc(k,2)

         nnc=1

      do i =2,nelt_c
         read(nu_msc,*) k,klixo,it_elm,it_cont,ilin,
     &			inno,inc(k,1),inc(k,2)


c     Acumula os nos do contorno em questao.
         nnc= nnc + 1

         if(it_cont.ne.it_cont0) then
      
            it_cont0= it_cont

            if(num_inc.eq.0) then
               n0 = nnc -1
            else
               nninc(num_inc)= nnc -1 
            endif

c     Inicializa o pr�ximo contorno
            num_inc = num_inc +1
            nnc= 1
            it_cont0= it_cont
         endif         
      enddo

      nninc(num_inc) = nnc

      read(nu_msc,132 ) fef
      if (fef.ne.fim_elm) stop 'Fim de elemts nao confere(contorno)'

      close(nu_msc)




C   ***************************************************************
!  pular as tres linhas iniciais da saida do gmsh
      read(nu_msd,*)
      read(nu_msd,*)
      read(nu_msd,*)
      
C     Leitura dos dados da malha no dominio

      read(nu_msd,130 ) fni

      if (fni.ne.ini_no) stop 'Inicio dos nos nao confere (dominio)'

C     Le numero total de pontos
      read(nu_msd,*) nnt_d  !numero total do nohs do dominio

C     calcula numero total de pontos internos

      npi= nnt_d - nnt_c
!       write(*,*)' Total de Pontos Internos',npi

      do i=1,nnt_c
         read(nu_msd,*) k,xk,yk

         if(abs(xk-x(k))+ abs(yk-y(k)).gt.0.001) then
            stop 'Arquivos de contorno e dom�nio incompat�veis'
         endif

      enddo

C     Le coordenadas dos pontos internos
      do i= 1,npi
         read(nu_msd,*) k,cx(i),cy(i)
c         WRITE(*,*)k,i,cx(i),cy(i)
      enddo

      read(nu_msd,131) fnf

      if (fnf.ne.fim_no) stop 'Final de nos nao confere (dominio)'


      read(nu_msd,131) fei !flag elementos inicial

      if (fei.ne.ini_elm) stop 'Inicio de elemts. nao confere (dominio)'

      read(nu_msd,*) nelt !numero de elementos

      do i =1,nelt_c
         read(nu_msd,*) k,klixo,it_elm,it_cont,ilin,
     &			inno,inck1,inck2


         if((inck1.ne.inc(k,1)).or.(inck2.ne.inc(k,2))) then
            stop 'Arquivos de contorno e dom�nio incompat�veis'
         endif

      enddo

C Leitura dos elementos e caracteriza��o dos pontos internos

      neld= nelt - nelt_c
      read(nu_msd,*) k,klixo,it_elm,num_dom,ind_surf,it_el,
     &                  incd(1,1),incd(1,2),incd(1,3)

      i=1
c      write(*,*)k,i ,incd(i,1),incd(i,2),incd(i,3)

C     Numero que caracteriza o primeiro dom�nio (meio externo)
C     no arquivo do gmsh
      num_dom0= num_dom
         
C     Caracterizacao do dominio/inclusao
      idom= 1

C     Limite dos nos internos nas inclusoes
C     numerados de forma crescente ao longo das inclusoes

C     Inicializa com o primeiro ponto interno 
      nld(idom,1)= nnt_c + 1
      no_max= nnt_c + 1


C     Detecta o maior n� no primeiro elemento
      do ino=1,3
         inog= incd(1,ino)
         no_max= max(no_max,inog)
      enddo
      nld(idom,2)= no_max


      do i=2,neld
         read(nu_msd,*) k,klixo,it_elm,num_dom,ind_surf,it_el,
     &                  incd(i,1),incd(i,2),incd(i,3)

c         write(*,*)k,i ,incd(i,1),incd(i,2),incd(i,3)

        if(num_dom.eq.num_dom0) then
C     Detecta o maior n� dentro do dom�nio/inclusao
            do ino=1,3
               no_max= max(no_max,incd(i,ino))
            enddo            
         else
C     Atualiza o dom�nio
            idom= idom + 1
            num_dom0= num_dom

C     Salva o n� maximo do dom�nio anterior
            nld(idom-1,2)= no_max

C     Salva o n� minimo do dom�nio atual
            no_max= no_max + 1
            nld(idom,1)= no_max

C     Detecta o maior n� dentro do dom�nio/inclusao
            do ino=1,3
               no_max= max(no_max,incd(i,ino))
            enddo            
            
         endif

      enddo

      ndom= idom
      nld(idom,2)= no_max


!       write(*,*)'Pontos Internos Limites dos dom�nios'
      isoma=0
      do i=1,idom
         iparc= nld(i,2)-nld(i,1)+1
         isoma= isoma + iparc
!          write(*,*) i,nld(i,1),nld(i,2),'.....sub-total:',iparc
      enddo
!       write(*,*) 'Total:',isoma

      
      
      read(nu_msd,132 ) fef
      if (fef.ne.fim_elm) stop 'Fim de elemts nao confere(contorno)'

      close(nu_msc)

      

C
C Leitura dos parametros basicos.
C
!       READ(LEC,*)NG

c      write(*,*) 'NG',NG

c      WRITE(IMP,300)npi,NG
!       WRITE(IMP,300) NG
  300 FORMAT(//2X,'DADOS'//,
c     *  5X,'NUMERO DE PONTOS INTERNOS ONDE A FUNCAO E CALCULADA=',I3,/,
     *  5X,'NUMERO DE PONTOS DE GAUSS=',I3,/)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! c     Acumula Num. de Equacoes (N_Eq), Num. de Nos (NN) 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       N_Eq = N0
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       NN = N0
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! C     Numero de inclusoes
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       nincl= ndom-1
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       DO IINC=1,NINCL
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! c         READ(LEC,330) NNINC(IINC),CINC(IINC)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! c 330     FORMAT(I5, F10.4)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          N_Eq = N_Eq + 2*NNINC(IINC)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          NN  = NN  + NNINC(IINC)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       ENDDO
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       WRITE(IMP,350)NN,N_Eq
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !  350  FORMAT('NUMERO TOTAL DE NOS = ', I4,/
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !      &        'NUMERO DE EQUACOES  = ',I4,/)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! C     Testa dimensionamento das matrizes
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       IF (N_Eq.GT.NX) STOP 'NUMERO DE INC. MAIOR QUE O DIMENSIONADO' 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       READ(LEC,*) C0
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! c      write(*,*) 'c0', c0
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! c  310 FORMAT(F10.4,I5)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       WRITE(IMP,320)N0,C0,nincl
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !   320 FORMAT(/,
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !      *  5x,'NUMERO DE Nos NO CONT. EXTERNO =',I3,/,
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !      *  5X,'CONDUTIVIDADE DO MEIO =',         F10.4,//,
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !      *  5x,'NUMERO DE INCLUSOES = ',I3/)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! C Imprime coordenadas dos n�s e conectividade do contorno externo
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       write(imp,*) '  CONTORNO EXTERNO    '
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       WRITE(IMP,500)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !   500 FORMAT(//2X,'COORDENADAS DOS PONTOS EXTREMOS DOS ELEMENTOS DE '
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !      *       ,'CONTORNO',//4X,'PONTOS',10X,'X',18X,'Y')
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       DO I=1,N0
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          WRITE(IMP,700)I,X(I),Y(I)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !   700    FORMAT(5X,I3,2(5X,E14.7))
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       ENDDO
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       WRITE(IMP,760)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !  760  FORMAT(//2X,'INCIDENCIA DOS ELEMENTOS',//4X,'ELEMENTO',5X,
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !      &            'NO INICIAL',5X,'NO FINAL',5x,'COMPRIMENTO')
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       DO I=1,N0
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          KODE(I) = 1
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          FI(I) = 0.D0
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          dx= x(inc(i,2)) - x(inc(i,1))
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          dy= y(inc(i,2)) - y(inc(i,1))
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          xl = sqrt(dx*dx + dy*dy)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          WRITE(IMP,770) I, INC(I,1), INC(I,2), xl
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !  770     FORMAT(6X,I3,12X,I3,9X,I3,5X,F12.4)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       END DO
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! C
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! C Leitura das condicoes de contorno.
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! C FI(I)= Valor do potencial no noh se KODE=0 .
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! C FI(I)= Valor da derivada do potencial se KODE=1 .
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! C
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! c    Zera os vetores KODE e FI
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       do i=1,nn
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          kode(i)= 1.0
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          fi(i)= 0.0
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       enddo
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       WRITE(IMP,800)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !   800 FORMAT(//2X,'CONDICOES DE CONTORNO(FLUXO NULO => KODE=1,FI=0)',//,
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !      &         5X,'NO',6X,'CODIGO',5X,'VALORES PRESCRITOS')
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !   
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       READ(LEC,*) NCCNN
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       DO I=1,NCCNN
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          READ(LEC,*)K,KODE(K),FI(K)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !   900    FORMAT(I5,F10.4)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       ENDDO
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       DO  I=1,N0
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          WRITE(IMP,950)I,KODE(I),FI(I)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !   950    FORMAT(5X,I3,8X,I1,8X,E14.7)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       ENDDO
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 	PONTOS INTERNOS 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       idom=1
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       WRITE(IMP,960) nld(idom,2)-nld(idom,1)+1,IDOM
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !   960 FORMAT(//2X,'COORDENADAS DOS',i4,' PONTOS INTERNOS AO DOMINIO',I2,
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !      *       //4X,'PONTOS',10X,'NUMERO',5X,'X',18X,'Y')
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       do i= nld(idom,1),nld(idom,2)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          WRITE(IMP,970) i-nnt_c, i, cx(i-nnt_c),cy(i-nnt_c)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !   970    FORMAT(5X,2I10,2(5X,E14.7))
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       enddo
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! C     Imprime dados referentes a discretiza��o das inclusoes
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       nini= n0 + 1 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       nfim= n0 + nninc(1)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       DO IINC=1,NINCL
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          read(lec,*) cinc(iinc)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          WRITE(IMP,340) IINC,CINC(IINC),NNINC(IINC)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !  340     FORMAT(5x,'Inclusao ',i2,/,
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !      &           10x,'Condutividade = ',F10.4,/
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !      &           10X,'Numero de n�s = ',i3,/)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          WRITE(IMP,500)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! c  500 FORMAT(//2X,'COORDENADAS DOS PONTOS EXTREMOS DOS ELEMENTOS DE '
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! c     *       ,'CONTORNO',//4X,'PONTOS',10X,'X',18X,'Y')
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          DO I=nini,nfim
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !             WRITE(IMP,700)I,X(I),Y(I)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! c     700    FORMAT(5X,I3,2(5X,E14.7))
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          ENDDO
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          WRITE(IMP,760)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! c     760  FORMAT(//2X,'INCIDENCIA DOS ELEMENTOS',//4X,'ELEMENTO',5X,
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! c     &            'NO INICIAL',5X,'NO FINAL',5x,'COMPRIMENTO')
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          DO I=nini,nfim
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !             KODE(I) = 1
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !             FI(I) = 0.D0
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !             dx= x(inc(i,2)) - x(inc(i,1))
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !             dy= y(inc(i,2)) - y(inc(i,1))
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !             xl = sqrt(dx*dx + dy*dy)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !             WRITE(IMP,770) I, INC(I,1), INC(I,2), xl
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! c     770     FORMAT(6X,I3,12X,I3,9X,I3,5X,F12.4)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          END DO
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          if (iinc.ne.nincl) then
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !             nini= nfim + 1
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !             nfim= nfim + nninc(iinc+1)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          endif
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          WRITE(IMP,960) nld(iinc+1,2)-nld(iinc+1,1)+1,IINC+1
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! c     960 FORMAT(//2X,'COORDENADAS DOS PONTOS INTERNOS AO DOMINIO',I2,
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! c     *       //4X,'PONTOS',10X,'NUMERO',5X,'X',18X,'Y')
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          do i= nld(iinc+1,1),nld(iinc+1,2)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !             WRITE(IMP,970) i-nnt_c, i,cx(i-nnt_c), cy(i-nnt_c)
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! c     970    FORMAT(5X,2I10,2(5X,E14.7))
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !          enddo
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !       ENDDO
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 



  130  format(a6)
  131  format(a9)
  132  format(a12)
      RETURN
      END



